package cn.tedu.luban.order.main.repository;

import cn.tedu.luban.order.protocol.bo.OrderBO;
import cn.tedu.luban.order.protocol.param.OrderCreateParam;
import cn.tedu.luban.order.protocol.param.OrderParam;
import cn.tedu.luban.order.protocol.query.AdminOrderListQuery;
import cn.tedu.luban.order.protocol.query.FrontOrderListQuery;
import java.util.List;

public interface OrderRepository {

    Long countOrders(AdminOrderListQuery adminOrderListQuery);

    List<OrderBO> queryOrders(AdminOrderListQuery orderBOQuery);

    OrderBO getOrderById(Long id);

    void saveOrder(OrderCreateParam param);

    OrderBO getOrderByOrderNo(String no);

    void closeOrder(OrderParam param);

    Long countOrders(FrontOrderListQuery query);

    List<OrderBO> queryOrders(FrontOrderListQuery query);

    void updateStatus(OrderParam param);

    Long updateSignStatus(OrderParam orderParam);

    Long updateConfirmStatus(OrderParam orderParam);

    Long updateDelayStatus(OrderParam orderParam);

    void updateFinishStatus(OrderParam orderParam);

    void updateCompleteStatus(OrderParam orderParam);
}